<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>js变量与数据类型</title>
  <script>
    // 一门语言：按照顺序学习 -> 变量、类型、运算符与表达式、条件结构、循环结构
    // 1. 变量命名规则：
    function fun1(){
      /**
       * 变量命名规范：
       * 1、变量名由字母、数字、下划线_和$这四种符号组成，首字符不能是数字。
       * 2、不能是系统关键字，如：class interface,let,const,var...
       * 3、变量名是区分大小写。（只要是c系列的语言[java,c++,c#,Javascript,python,go...]都是如此）
       *   扩展点：b系列的语言不区分大小写（basic，vb，各种数据库）
       */
      let a1 = 10
      let c = 1
      console.log("c = ",c)
    }
    // fun1()
    /**
     * 2. 数据类型
     *  number（数值类型）、
     *  string（字符串类型）、
     *  boolean（布尔类型）、
     *  Object对象类型、
     *  undefined未定义
      */

    function fun2(){
      // 2.1 数字类型number (包含整数+小数)
      // python中有：int(整数)和float（小数）
      // java中有：整数：byte/short/int/long 小数：float/double
      let a = 10
      console.log("a = ",a,",a的类型：",typeof a)     // a =  10 ,a的类型： number
      a = 3.14
      console.log("a = ",a,",a的类型：",typeof a)     // a =  3.14 ,a的类型： number

      // 2.2 布尔类型(true或false，代表真和假)
      // python中：只能取 True / False
      a = false
      console.log("a = ",a,",a的类型：",typeof a)     // a =  true ,a的类型： boolean

      // 2.3 字符串类型(string)
      a = 'hello'
      console.log("a = ",a,",a的类型：",typeof a)     // a =  hello ,a的类型： string

      // 2.4 对象类型
      // 2.4.1 普通对象类型
      a = {
        "sid":1001,
        "sname":"张三"
      }
      console.log("a = ",a,",a的类型：",typeof a)     // a =  {sid: 1001, sname: '张三'} ,a的类型： object
      // 2.4.2 数组对象类型
      a = ["1","2"]
      console.log("a的类型：",Object.prototype.toString.call(a))  // a的类型： [object Array]
      // 2.4.3 函数类型
      a = function(){}
      console.log("a的类型：",Object.prototype.toString.call(a))   // a的类型： [object Function]
      // 2.4.4 null类型
      a = null
      console.log("a的类型：",typeof a)   // a的类型： [object Null]
      // 2.5 未定义类型
      a = undefined
      console.log("a的类型：",typeof a)   // a的类型： a的类型： undefined

    }
    fun2()
  </script>
</head>
<body>

</body>
</html>
